home *** CD-ROM | disk | FTP | other *** search
- Subject: v18i041: Mail user's shell version 6.4, Part19/19
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Dan Heller <island!argv@sun.com>
- Posting-number: Volume 18, Issue 41
- Archive-name: mush6.4/part19
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 19 (of 19)."
- # Contents: mush.1.1
- # Wrapped by rsalz@papaya.bbn.com on Mon Mar 13 19:25:25 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'mush.1.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mush.1.1'\"
- else
- echo shar: Extracting \"'mush.1.1'\" \(49833 characters\)
- sed "s/^X//" >'mush.1.1' <<'END_OF_FILE'
- X.\" Mush Man Page: Copyright (c) 1987 Dan Heller
- X.\" Cleaned up January 1988 by Bart Schaefer <schaefer@cse.ogc.edu>
- X.\"
- X.if n .ds Q \&"
- X.if n .ds U \&"
- X.if t .ds Q \&``
- X.if t .ds U \&''
- X.if n .ds - --
- X.if t .ds - \(em
- X.nh
- X.TH MUSH 1 "Oct 24, 1988" "Version 6.4"
- X.UC 4
- X.SH NAME
- XThe Mail User's Shell \- Shell for electronic mail.
- X.SH SYNOPSIS
- X.B mush
- X[
- X.B \-n
- X]
- X[
- X.B \-v
- X]
- X[
- X.B \-s
- Xsubject
- X]
- X[
- X.B \-c
- Xcc-list
- X]
- X[
- X.B \-b
- Xbcc-list
- X]
- X[
- Xaddress-list
- X]
- X.br
- X.B mush
- X[
- Xmode-options
- X]
- X[
- Xfile-options
- X]
- X.SH INTRODUCTION
- XThe Mail User's Shell (Mush) is an interface for sending and manipulating
- Xa database of electronic mail messages under the
- X.IR UNIX (TM)
- Xenvironment.
- XThere are three user interfaces that allow the user to interact with
- X.I Mush.
- XThe default interface is the conventional tty-based line mode
- Xsimilar to command line interpreters such as
- X.I csh
- Xas well as other mailers, such as University of California, Berkeley's
- X.I Mail
- Xand Bell Lab's System V
- X.I mailx
- Xinterface.
- XThis mode requires nothing from the terminal in terms of screen
- Xcapability and may be run on many different versions of the
- X.IR UNIX (TM)
- Xoperating system.
- X.PP
- XThe text-graphics
- X.RI ( curses )
- Xinterface is reminiscent of the
- X.I vi
- Xvisual editor, but is user-configurable to simulate other editors.
- XThis interface does not require graphics capabilities of
- Xthe computer or the terminal on which it is run, but the terminal must
- Xhave the minimum capabilities required by any visual screen editor.
- X.PP
- XThe
- X.I window
- Xinterface for the Sun Workstation utilizes the icon and
- Xmenu based (mouse selectable) windowing system.
- XThis
- X.I tool
- X(graphics) mode is highly subject to the version of operating system
- Xyour Sun may be running.
- XWhile the program works with variable levels of success on earlier versions, it
- Xis intended to be run on Sun versions 2.0 and higher.
- XSee the BUGS section at the end for more information.
- X.PP
- XSee the corresponding sections for more information on the user
- Xinterface desired.
- XMost of this manual deals with commands, variables
- Xand actions that are common to all three interfaces although
- Xsome attention is paid to individual characteristics of each interface.
- X.PP
- XThe following command line arguments are understood by
- X.I Mush
- X(full word forms in parentheses):
- X.TP
- X\-b
- X(\-blindcarbon, \-blind)
- XThe list of Blind Carbon Copy recipients is set on the command line.
- XIf more than one address or an address containing spaces is specified, the
- Xentire list should be enclosed in quotes.
- XThis option applies when sending mail only.
- XIf you are entering the shell, curses mode, or the tool mode, this option is
- Xignored.
- X.TP
- X\-C
- X(\-curses)
- XEnter the mailer in curses mode upon startup.
- X.TP
- X\-c cc-list
- X(\-carbon, \-copy)
- XThe list of Carbon Copy recipients is set on the command line.
- XIf more than one address or an address containing spaces is specified, the
- Xentire list should be enclosed in quotes.
- XThis option applies when sending mail only.
- XIf you are entering the shell, curses mode, or the tool mode, this option is
- Xignored.
- X.TP
- X\-d
- X(\-debug)
- XTurns on the debugging level to 1.
- XYou can change debugging levels from within the shell using the
- X.B debug
- Xcommand.
- X.TP
- X\-F[!] filename
- X(\-source)
- XThis file is the same type as the initialization file read on startup
- X(see INITIALIZATION) with the exception that commands that manipulate
- Xor search messages may be given.
- XNormally, such commands may not appear in the initialization file since
- Xthat file is read before the folder is scanned.
- XThe file specified by \-F is read after the folder is scanned, so
- Xcommands that affect messages are allowed.
- XThe optional `!' argument prevents the shell from running after the
- Xfile has been sourced.
- XOtherwise,
- X.I Mush
- Xcontinues into whatever interface has been specified.
- X.TP
- X\-f [ filename ]
- X(\-folder)
- XThe optional filename argument specifies a folder containing mail messages.
- XWith no argument,
- X.B mbox
- Xin the current directory (or the variable
- X.BR mbox )
- Xis used.
- XIf no filename is given, this option must be last on the command line.
- X.TP
- X\-H[:c]
- X(\-headers)
- XHave
- X.I Mush
- Xdisplay mail headers without entering the shell.
- XSee the
- X.B headers
- Xcommand for information on the
- X.B :c
- Xargument.
- XNo colon modifier is equivalent to \*Q\-H:a\*U.
- XThis option prevents the shell from running, so this option will turn off the
- X\-S and \-C flags.
- XThis option is ignored if the tool mode is in effect.
- X.TP
- X\-i
- X(\-interact)
- XForces interactive mode even if input has been redirected to the program.
- XThis is intended for remote host mail sessions but also allows
- Xthe user to redirect \*Qscripts\*U of
- X.I Mush
- Xcommands.
- XSee the INITIALIZATION section for information on how to
- Xwrite scripts that deal with mail.
- XNote that this flag is different from the \*Qignore\*U flag of UCB Mail.
- X.TP
- X\-N
- X(\-noheaders)
- XEnter
- X.I Mush
- Xwithout displaying any message headers.
- XThis argument is passed to the
- X.B folder
- Xcommand.
- X.TP
- X\-n
- X(\-noinit)
- XNo initialization is done on start up.
- XThat is, do not source
- X.I .mushrc
- Xor
- X.I .mailrc
- Xfiles.
- XSee the INITIALIZATION section for more information on
- Xstartup and the significance of these files.
- X.TP
- X\-r
- X(\-readonly)
- XInitialize the folder in Read-Only mode; no modification of the folder is
- Xpermitted.
- XThis argument is passed on to the
- X.B folder
- Xcommand.
- X.TP
- X\-S
- X(\-shell)
- XThis flag allows the user to enter the shell even if the system
- Xmailbox or specified folder is empty or doesn't exist.
- X.TP
- X\-s subject
- X(\-subject)
- XThe subject is set on the command line using this flag.
- XIf the subject has
- Xany spaces or tabs, the entire subject should be enclosed in quotes.
- XThis applies when sending mail only.
- XIf you are entering the shell,
- Xcurses mode, or the tool mode, this option is ignored.
- X.TP
- X\-T timeout
- X(\-timeout)
- XIn the tool mode (Sun only),
- X.I timeout
- Xspecifies the length of time (seconds) to wait between each check for new mail.
- X30 seconds is the smallest time allowed for performance reasons.
- X60 seconds is the default value.
- X.TP
- X\-t
- X(\-tool)
- XUse the graphics tool mode (Sun only).
- X.TP
- X\-u [ user ]
- X(\-user)
- XThe mailbox to use is /usr/spool/mail/\fBuser\fR.
- XIf the login name for user is not specified, then root is used.
- X.TP
- X\-m mailbox-path
- X(\-mailbox)
- XThe mailbox specified will be interpreted as if it were the user's main
- X(system) mailbox in place of /usr/spool/mail/$USER (or whatever path is
- Xapplicable for your system and Mail Transport Agent).
- X.TP
- X\-v
- X(\-verbose)
- XVerbose mode is turned on.
- XThis option is passed to the actual mail delivery
- Xsubsystem internal to your version of
- X.IR UNIX (TM).
- XSome mailers do not have a verbose option, so this flag may not apply
- Xto your system (System V, for example).
- XThis applies when sending mail only.
- XIf you are entering the shell,
- Xcurses mode, or the tool mode, this option is ignored.
- X.TP
- X\-1 cmd_help
- X.ns
- X.TP
- X\-2 tool_help
- X.rs
- X(\-help, \-sunhelp)
- XSpecify alternate locations of help files.
- XThese should be full pathnames accessible for reading.
- XThis is usually done if a binary copy of
- X.I Mush
- Xhas been copied from another machine and the wrong pathnames to the
- Xhelp files cannot be changed.
- X.SH FEATURES
- X.BR "New Mail" .
- X.PP
- XIf during a
- X.I Mush
- Xsession, new mail arrives for you, it is automatically incorporated into
- Xyour system mailbox and you are told that new mail has arrived.
- X.PP
- XIn the default line mode, new mail is checked between each command
- Xissued.
- XIn the curses mode, new mail is checked on each
- Xcommand and is displayed in the bottom line of the screen.
- XIn the tool based graphics mode, new mail is checked approximately
- Xevery minute or by the number of seconds specified by the
- X.B -T
- Xoption on the command line.
- X.PP
- XIf you are using your system mailbox as your \*Qcurrent folder,\*U then the
- Xnew mail is added immediately to your current
- Xlist of messages and information similar to the following example is
- Xdisplayed, to tell you whom the mail is from:
- X.sp
- X.ti +2
- XNew mail: (#15) island!argv@sun.com (Dan Heller)
- X.sp
- XIf you are not in your system mailbox, then the new mail will not be added
- Xto your list of messages, but you will instead be informed of the new arrival.
- X.sp
- XIf you are using the tool based mode and
- X.I Mush
- Xis closed to an iconic state, then the number of messages in the current
- Xfolder is displayed on the mailbox icon and the flag on the mailbox will go up.
- X.PP
- X.BR History .
- X.PP
- XIn the line-mode interface,
- X.I Mush
- Xsupports a history mechanism similar to that supplied by
- X.IR csh .
- XA subset of
- X.I csh
- Xhistory modifiers are supported to reference previously
- Xissued commands and to extract specified arguments from these commands.
- X.PP
- X.BR "Mail Aliases" .
- X.PP
- XMail aliases are shorthand names for long mail addresses.
- XThese are supported in the same manner as UCB Mail supports them.
- XBecause
- X.I Mush
- Xhas command line history reminiscent of
- X.IR csh ,
- Xcommands that use UUCP's `!' character for user-host and host-host
- Xseparation should be escaped (preceded by a backslash).
- XThis is not necessary in the initialization file (.mushrc) because history
- Xreferencing is ignored while these files are being sourced.
- XSee the INITIALIZATION and LINE-MODE INTERFACE sections for more
- Xinformation on initialization file format and the history mechanism.
- X.PP
- XAliases reference normal mailing addresses as well as other aliases.
- XIf a loop is detected, then the user will be notified and the message will
- Xbe forced into the file
- X.B dead.letter
- Xin the user's home directory.
- XThe
- X.B unalias
- Xcommand is used to reverse the effects of the
- X.B alias
- Xcommand.
- X.PP
- X.BR "Command Line Aliases" .
- X.PP
- XCommand aliases are different from mail aliases in that they are used
- Xto expand to commands.
- XThe usage of command line aliases is similar to that supplied by
- X.IR csh .
- X.PP
- X.BR "Command Pipes" .
- X.PP
- X.I Mush
- Xcommands can be \*Qpiped\*U to one another so as to provide output of
- Xone command to be used as input to the next command in the pipeline.
- XHowever, the output of commands is not the \*Qtext\*U that is returned
- X(as it is in
- X.IR csh )
- Xbut a list of the messages that were affected.
- X.PP
- X.BR Help .
- X.PP
- X.I Mush
- Xwas designed so that each command or action should not be a mystery.
- XHelping the user understand what to do and how to do whatever he wishes
- Xis the goal behind the help facility.
- XFor this reason, the
- X.B help
- Xcommand gives information on both general usage and a few specific help
- Xcategories.
- X.PP
- XIn text mode, most help is gotten by typing \-? as an argument to a
- Xcommand.
- XAmost every command has the \-? option.
- XWhen this option is specified, most commands will attempt to read from
- Xa help file a brief explanation of the functionality of the command.
- XIf necessary, a pointer to other sources of information will
- Xbe given to fully explain a concept.
- X.PP
- XIn the curses mode, the `?' key will display a list of the current
- Xkey-to-command bindings; a keystroke or set of keystrokes correspond
- Xdirectly to a command.
- X.PP
- XIn the tool/graphics mode, this is
- Xalso available, but more extensive help is provided in the pop-up menus.
- XPop-up menus can be gotten from virtually anywhere on the screen; press the
- XRIGHT mouse button (the \*Qmenu button\*U) and a number of items will appear
- Xin a menu.
- XThe last command in the menu list will be one labelled \*Qhelp\*U.
- XSelecting this menu item will display a \*Qhelp box\*U in the center of the
- Xconsole and wait for input to remove the box.
- X.PP
- X.BR "Sorting mail" .
- X.PP
- X.I Mush
- Xallows you to sort your mail according to various constraints such
- Xas time, status (new, unread, deleted, etc.), author and subject.
- XSee the
- X.B sort
- Xcommand in the COMMANDS section for more information on sorting.
- X.PP
- X.B Picking specific messages.
- X.PP
- XYou can select messages that contain unique information, or from
- Xmessages that have special attributes.
- XYou have the option of restricting your search to messages between dates,
- Xmessage numbers, author names and other constraints.
- X.SH INITIALIZATION
- XAfter the command line arguments have been interpreted, if the argument
- X.B -n
- Xis not given,
- X.B Mush
- Xwill read commands from an
- X.B "initialization file"
- Xthat (typically) sets variable values, aliases, command line aliases,
- Xand so forth.
- XThe default system initialization file is read first and then the
- Xuser's personal initialization file is read.
- XThe system default file
- Xis set up by the system administrator and may contain commands that
- Xshould be set system-wide.
- X.PP
- XThe user's file is determined by first looking for the environment variable
- X.IR MAILRC .
- XIf that file isn't found, then the file
- X.I .mushrc
- Xis searched for in the home directory of the user.
- XIf that file cannot be found,
- X.I Mush
- Xwill attempt to read the file
- X.I .mailrc
- Xfrom the same directory.
- XFinally, if that file cannot be read, no initialization is done
- Xand the default values will be in effect.
- X.PP
- XIf the user has no home directory, or permissions prevent read/write access
- Xto $HOME, /tmp is used as the home directory.
- XSee the
- X.B home
- Xvariable under the VARIABLES section.
- X.PP
- XOnce in the shell, the
- X.B source
- Xcommand may be used to specify a file if you want to read commands
- Xfrom a file other than the default.
- XThe command
- X.B saveopts
- Xwill save all variable settings, aliases, and all other
- X.I Mush
- Xsettable attributes, to aid in creating an initialization file.
- XIf no filename is given on the command line,
- Xthe
- X.B source
- Xand
- X.B saveopts
- Xcommands choose a file in the manner described above.
- X.B Saveopts
- Xwill not overwrite the file if it exists.
- XIn such cases, you will be prompted to confirm overwrite.
- XIf you confirm overwriting the existing file, remember that existing \*Qif\*U
- Xexpressions or other manually entered comments or non variable-setting type
- Xcommands that previously existed in the file will be lost.
- X.PP
- XNo interactive commands should be called from any initialization file.
- XThese commands are not prevented because it is impossible to trace which
- Xcommands are actually
- X.IR UNIX (TM)
- Xcommands that will be interactive.
- XThe responsibility of not running interactive commands is left to the user.
- XBecause the initialization file is read
- X.I before
- Xany messages are read into the program,
- Xmessage filtering commands should not be placed in this file unless you know
- Xyou're going to
- X.IB re- source
- Xthe file later as a command.
- X.PP
- X.IR "Initialization File Format" .
- XWhen reading the initialization file,
- X.I Mush
- Xwill recognize the `#' character as a comment character.
- XIt may be anywhere on a line in the file.
- XWhen that character is encountered,
- Xprocessing of that line is discontinued to the end of the line.
- XIf the `#' is enclosed in quotes (single or double), then it is not
- Xconsidered a comment.
- XExamples:
- X.sp
- X.ti +2
- Xset shell = /bin/csh # set the shell variable
- X.ti +2
- X# this entire line has been commented out.
- X.ti +2
- Xset prompt = "Message #%m: " # The `#' is within quotes
- X.PP
- XThe
- X.B exit
- Xcommand has special meaning in the initialization file.
- XIf the command is found,
- X.I Mush
- Xwill not exit, but rather, discontinue reading from the file immediately.
- X.PP
- XThere may be \*Qif\*U expressions within the initialization file to determine
- Xcertain runtime states of
- X.IR Mush .
- XNo parentheses are allowed and only one boolean expression may be
- Xevaluated per line; that is, no \*Q&&\*U or \*Q|\||\*U may be used in
- Xexpressions.
- XAn \*Qelse\*U on a line by itself may precede alternative
- Xactions.
- X\&\*QIf\*U expressions may be nested to any reasonable depth, but
- Xthere must always be an \*Qendif\*U matching each \*Qif\*U expression.
- XThe statements associated with an \*Qif\*U expression are never on the
- Xsame line with the conditional expression.
- X.PP
- XConditional expressions understood include the internal variables
- X.IR istool ,
- X.IR iscurses ,
- X.IR hdrs_only ,
- X.IR is_sending ,
- Xand
- X.IR redirect .
- XIf
- X.I istool
- Xis true, the program is going to run in the tool mode.
- XIf
- X.I iscurses
- Xis true, the program is in or is going to run in the curses mode even
- Xthough the screen package may not yet have been started.
- XIf
- X.I hdrs_only
- Xis true, then the -H flag on the command line has been given.
- XIf
- X.I is_sending
- Xis true, then the user is sending mail to a user.
- XThis does not imply
- Xthat the user is not going to be running a shell after the mail is sent.
- XIf
- X.I redirect
- Xis true, then input to the program is redirected.
- XThe test for redirection tells whether input, not output, has been
- Xredirected to the program.
- XThe
- X.B \-i
- Xoption on the command line is required to run the shell if redirect is on.
- XIf \-i is specified, the value for
- X.I redirect
- Xwill be set to false.
- XThese are internal variables whose values cannot be referenced using the
- X\*Q$variable\*U method of variable expansion.
- X.PP
- XThe `!' operator may be used to negate expressions, thus,
- X.sp
- X.nf
- X.in +2
- Xif !istool
- X.ti +4
- Xexit
- Xelse
- X.ti +4
- Xset autoprint
- Xendif
- X.in -2
- X.fi
- X.sp
- Xmeans that if you are not running as a tool, stop reading commands from this
- Xfile.
- XOtherwise, set the autoprint variable.
- X.sp
- X.in +2
- X.nf
- Xset hdr_format = "%25f %7d (%l/%c) %25s"
- Xif hdrs_only
- X.ti +4
- Xexit
- Xendif
- X.in -2
- X.fi
- X.sp
- XThis tells the program to set the hdr_format variable and check to see if
- Xwe're running the program to read headers only.
- XIf so, stop reading this file (exit) and continue on with the program.
- XThis speeds up runtime quite a bit for those who have lengthy initialization
- Xfiles, because no other shell variables are necessary.
- X.sp
- X.in +2
- X.nf
- Xif !iscurses
- X.ti +4
- Xset crt = 24 screen = 18
- Xendif
- X.in -2
- X.fi
- X.sp
- XThis segment checks to see that we're not running in curses mode, and if not
- Xit will set our crt and screen sizes.
- XThis is mostly because the curses mode will set those values for us by looking
- Xat the size of the screen.
- XLike other interactive commands, the
- X.B curses
- Xcommand itself should never be called from an initialization file.
- XDoing so will cause terminal settings to be set incorrectly and cause
- Xunpredictable results from there.
- XSee the CURSES INTERFACE section for configuring your
- Xenvironment so you enter curses mode each time you run the shell.
- X.PP
- XString evaluation is allowed in \*Qif\*U expressions, and the operators
- X\*Q==\*U and \*Q!=\*U may be used to determine equality or inequality.
- XUsually, variables are compared with constants for evaluation.
- XNote that it is not possible to compare variables to an empty string, and
- Xvariables that evaluate to an empty string may cause errors.
- XIt is possible to test whether a variable is set by using the syntax
- X\*Q$?variable\*U (as in
- X.IR csh )
- Xbut there is not currently any way to test for an empty string value.
- X.sp
- X.in +2
- X.nf
- Xif $TERM == adm3a
- X.ti +4
- Xset pager = more
- Xelse
- X.ti +4
- Xset pager = less
- Xendif
- X.in -2
- X.fi
- X.sp
- XThis segment tests to see if the user's terminal type is \*Qadm3a\*U.
- XIf it is, then it sets the pager variable to be the
- X.I more
- Xprogram.
- XNote that the variable TERM will be gotten from the user's environment if a
- Xshell variable is not set already.
- XOtherwise, the pager variable is set to \*Qless\*U.
- XThis exemplifies the fact that
- X.I less
- Xfrequently fails to function correctly
- Xfor the terminal type \*Qadm3a\*U so we don't use it.
- X.sp
- XAlso supported in \*Qif\*U expressions are the test flags \*Q-e\*U
- Xand \*Q-z\*U. These flags test to see if a file exists (\*Q-e\*U) or
- Xif it is zero-length (\*Q-z\*U).
- X.sp
- X.nf
- X.in +2
- Xset mbox = ~/Mail/mbox
- Xset newfolder = /usr/spool/mail/$USER
- Xif -z $newfolder
- X.ti +4
- Xset newfolder = $mbox
- Xendif
- Xif -e $newfolder
- X.ti +4
- Xfolder $newfolder
- Xelse
- X.ti +4
- Xquit
- Xendif
- X.fi
- X.in -2
- X.sp
- XThis sets a new variable called \fBnewfolder\fR to the the user's spool
- Xmailbox (the system mailbox). It then tests to see if it is zero length,
- Xand if it is, resets the variable to the value of the user's \fBmbox\fR
- Xvariable (mbox must be set here). It then tests to see if the new folder
- Xexists. If it does, it changes folders to the new folder. If it doesn't
- Xexist, the program exits (via \fBquit\fR).
- X.PP
- XAfter sourcing the initialization file,
- X.I Mush
- Xreads all the mail out of the specified folder (the system spool directory
- Xif no folder is given) and creates a list of messages.
- XThe current maximum number of messages the user
- Xcan load is set to 1000 by default.
- XThe system administrator who configures the program can reset this
- Xvalue higher or lower if you ask nicely.
- XIf the user has the
- X.B sort
- Xvariable set, then when the current folder's messages have all been read,
- Xthe messages are sorted according to the value of the
- Xvariable (see the
- X.B sort
- Xentry under the VARIABLES heading for more information).
- XEach message has a number of message header lines that contain information
- Xabout whom the mail is from, the subject of the message, the date it was
- Xreceived, and other information about the letter.
- XThis information is then compiled into a one-line summary for
- Xeach message and is printed out in an appropriate manner
- Xdepending on the interface you're using.
- X.PP
- XAt this point, commands may be input by the user.
- XLengthy or complex commands can be placed in a file and then executed via the
- X.B source
- Xcommand; for example, a filtering file, "filter", might contain:
- X.sp
- X.in +2
- X.nf
- Xpick -f Mailer-Daemon | save mail_errors
- Xpick -f yukko | delete
- Xpick -s -i thesis | save +thesis_mail
- Xpick -t unix-wizards | +wizmail
- Xupdate
- Xsort d
- X.in -2
- X.fi
- X.sp
- XThen the first command the user typed might be \*Qsource filter\*U
- Xand the following would happen:
- XFirst, all messages that have \*QMailer-Daemon\*U in the from line
- Xwill be saved in the file mail_errors.
- XThen, all mail from the user \*Qyukko\*U will simply be deleted.
- XNext, all mail that has in the subject field \*Qthesis\*U
- X(case ignored, so \*QThesis\*U would also match) would be
- Xsaved in the file $folder/thesis.
- XThe next command will find all messages that are addressed to
- Xthe group \*Qunix-wizards\*U (of which the user is an elite
- Xmember) and save them in the file $folder/wizmail.
- XLast, the folder will be updated, removing all deleted mail
- X(saved mail may be marked as deleted)
- Xand the folder is reread and sorted according to the date of the messages.
- X.SH "GENERAL USAGE"
- XBecause there are three different interfaces available to the user,
- Xthe tty characteristics (backspace, kill-word, kill-line, redraw line)
- Xare simulated identically in all interfaces.
- XWhen the user has to type something, the 4.2BSD style of tty driver interface
- Xis simulated whether you're in the window system, the curses mode, or
- Xthe tty-line
- Xmode, and even on System-V machines.
- XThis means that backspacing causes a
- Xbackspace-space-backspace effect (erasing the character backspaced over).
- XThe user may reset his tty characteristics using the
- X.B stty
- Xcommand.
- X.PP
- X.IR "Displaying messages" .
- X.PP
- XDepending on the interface you use, you can display any message in your
- Xlist of messages as long as the message is not marked for deletion.
- XIf the message is marked as deleted, then use the
- X.B undelete
- Xcommand supplied by the interface you are using.
- XTo display a message in line mode, specify the message using
- X.BR print ,
- X.BR type ,
- X.BR p ,
- X.BR t ,
- Xor type a message number to display that message on the screen.
- X.PP
- XIn curses mode, move the cursor over the message you want and type
- Xa `t' or `p' to read the message.
- XYou may \*Qbind\*U other keys to call
- Xthe function that displays messages if `t' and `p' are uncomfortable.
- X.PP
- XIn the graphics mode, move the mouse over the message you wish to
- Xbe displayed and select the LEFT mouse button.
- XIf the message you want is not visible (in the header subwindow), you may type,
- Xin the message subwindow, the number of the message and hit return.
- XThat message number will be displayed.
- X.PP
- XIn the line or curses mode, if the message has more lines than the variable
- X.BR crt ,
- Xthen a
- X.I pager
- Xwill be invoked to allow the user to page through the message without
- Xhaving it scroll off the screen.
- XThe pager used is determined by the variable
- X.BR pager .
- XIf that variable is unset, then a default pager will be used.
- XNote that if pager is set, but not to a value, or is set to the value
- Xof \*Qinternal\*U, then the internal pager is used.
- XThe internal pager
- Xis very simple; the spacebar displays the next
- X.B crt
- Xlines, carriage return prints the next line, and \*Qq\*U quits the pager.
- X.PP
- XIn the tool mode, if a message is larger than the size of the message
- Xsubwindow, the amount of the message viewed is displayed and the user
- Xmay page through the message via `\\n', `\\r', `j', `J', or `+' (forward
- Xby lines), `k', `K', or `-' (backwards
- Xby lines), `\ ' or LEFT mouse button (forward by pages), or MIDDLE mouse button
- X(backwards by pages).
- XThe user may precede the forward and backwards by lines keystrokes with a
- Xnumerical
- X.I count
- Xto specify how many lines to scroll. This
- X.I count
- Xremains in effect (across message and folder changes)
- Xuntil a new one is specified.
- X.PP
- XAn alternative to displaying messages is the
- X.B top
- Xcommand.
- XThis command will print just the top few lines of a message.
- XThe number of lines is determined by the variable
- X.BR toplines .
- XIf this variable isn't set,
- X.B top
- Xwill print a number of lines equal to the value of the variable
- X.BR crt .
- X.PP
- X.IR "Sending mail" .
- X.PP
- XYou can send mail using the
- X.B mail
- Xcommand or by responding to other mail.
- XIn either case, when you are sending mail, you are in a mode where everything
- Xyou type is added to the contents of the message.
- XWhen you are done typing your message, you can type `^D'
- X(control-D) to signify the end of the message.
- XIf you have the variable
- X.B dot
- Xset, then you can end a message with a `.' on a line by itself.
- X.PP
- XWhile you are composing a message,
- X.I Mush
- Xtreats lines beginning with the character `~' specially.
- XThis is called a
- X.B tilde escape.
- XFor instance, typing \*Q~i\*U (alone on a line) will place a copy
- Xof the \*Qcurrent message\*U into your message body.
- XIt will not include the message headers of the message, just the body of text
- Xthat comprises the message.
- X.PP
- XAvailable
- X.BR "tilde escapes" :
- X[OPTIONAL arguments in square brackets]
- X.TP
- X~a file
- XAppend message buffer to file name.
- X.TP
- X~b [bcc-list]
- XModify blind carbon recipients; otherwise identical to ~t.
- X.TP
- X~c [cc-list]
- XModify carbon copy recipients; otherwise identical to ~t.
- X.TP
- X~E[!]
- XErase message buffer.
- XSave the contents of the letter to \*Qdead.letter\*U
- X(unless the `!' is specified) and then clear the message buffer; the user
- Xremains in editing mode.
- XIf the variable
- X.B nosave
- Xis set, then `!' need not be specified.
- X.TP
- X~e [editor]
- XEnter the editor.
- XDefaults to variable
- X.BR editor ,
- Xenvironment EDITOR, or
- X.IR vi .
- X.TP
- X~F[!]
- XAdd a fortune [don't add] at end of message.
- X.TP
- X~f [msg-list]
- XForward mail.
- XThe included messages are not indented,
- Xbut are marked as \*Qforwarded mail\*U.
- X.TP
- X~H [msg-list]
- XSame as ~i, but also include the message headers.
- X.TP
- X~h
- XModify all message headers.
- XEach header is displayed one by one and each may be edited.
- X.TP
- X~i [msg-list]
- XInclude current message body (or numbered messages).
- XSee the descriptions of the variables
- X.BR indent_str ,
- X.BR pre_indent_str ,
- Xand
- X.BR post_indent_str .
- X.TP
- X~p [pager]
- XPage the message body.
- XDefaults to variable
- X.BR pager ,
- Xenvironment PAGER, or the default pager set up by the system administrator.
- XThis may be the internal pager.
- X.TP
- X~q
- XQuit message; save in ~/dead.letter if
- X.B nosave
- Xis not set.
- X.TP
- X~r file
- XRead filename into message buffer.
- X.TP
- X~S[!]
- XInclude [don't include] signature at end of message.
- XThe variables
- X.B autosign
- Xand
- X.B autosign2
- Xdescribe the file or string to append to the message.
- XSee the VARIABLES section for more information on these variables.
- X.TP
- X~s [subject]
- XModify the subject header.
- XIf an argument is given (a new subject), then the subject line is
- X.I replaced
- Xby the new subject line.
- XIf none is given, then the subject line is
- Xdisplayed for editing just as in the ~t command.
- X.TP
- X~t [list]
- XChange list of recipients (\*QTo\*U list).
- XIf a list is given, this list is
- X.B appended
- Xto the current list.
- XIf no list is given, then the current list
- Xis displayed and the cursor placed at the end of the list.
- XYou can backspace over the stuff in the list or you can append more
- Xaddresses onto the end of the list as desired.
- X.TP
- X~u
- XUp one line.
- XIf the user made a mistake typing a letter and he
- Xhas already hit carriage return, he may avoid entering the editor
- Xand edit the previous line using ~u.
- XThe line is retyped and
- Xthe cursor is placed at the end allowing the user to backspace
- Xover it and retype the line.
- XSystem-V users should note that if
- Xthe new line is shorter than it was before the ~u command, the
- Xline is padded with blanks to the previous length of the file.
- X.TP
- X~v [editor]
- XEnter the visual editor.
- XDefaults to variable
- X.BR visual ,
- Xenvironment VISUAL, or
- X.IR vi .
- X.TP
- X~w file
- XWrite message buffer to file name.
- X.TP
- X~x
- XExit message; don't save in dead.letter.
- X.TP
- X~$variable
- XInsert the string value for variable into message.
- XIf a boolean variable is listed, nothing is appended regardless of its value.
- X.TP
- X~:command
- XRun the
- X.I Mush
- Xcommand specified by \*Qcommand\*U.
- XYou may not run any command that sends mail.
- XIt is inadvisable to change folders at this time
- Xsince the current message list may be corrupted, but the action is
- Xallowed nonetheless to provide flexibility for experienced users.
- X.TP
- X~~
- XA line beginning with two escape characters will be unaffected by
- X.I Mush
- Xexcept that only a single tilde will be inserted into the letter.
- X.PP
- XThe variable
- X.B escape
- Xmay be set to describe a character other than `~' to be used as the
- Xescape character.
- XWhen sending mail, the above tilde escapes are available in
- Xall three user interfaces.
- X.SH "LINE-MODE INTERFACE"
- XIn the line-mode, the user is given a prompt to which commands are issued
- Xand arguments are passed to commands.
- XWhen the user types at the prompt, each line is parsed and words (or
- Xarguments) are separated into an array of strings.
- XThis array, also called an
- X.IR "argument vector" ,
- Xis then modified by expanding history references, command line aliases,
- Xand variable references.
- XA command line ends when the end of the line is encountered or a pipe (|)
- Xor semicolon (;) character is encountered, separating discrete commands.
- X.PP
- XWhen a command line has been parsed and placed in an argument vector, the
- Xfirst argument in the vector (the \*Qcommand\*U) is searched for in a list
- Xof legal
- X.I Mush
- Xcommands.
- XIf found, the function associated with that command is called and
- Xthe rest of the line is passed to that function as
- X.IR "command line arguments" .
- X.PP
- XBefore commands are called, however, the input the user gives is preprocessed
- Xin a style reminiscent of the C-shell
- X.RI ( csh ).
- X.I Mush
- Xalso supports a subset from each of the following aspects of
- X.IR csh :
- X.in +2
- X\(bu Command history.
- X.br
- X\(bu Command line aliasing.
- X.br
- X\(bu \*QPiping\*U mechanism to
- Xredirect \*Qinput\*U and \*Qoutput\*U of commands.
- X.in -2
- X.PP
- X.BR "Command history" .
- X.PP
- XThe history mechanism remembers commands up to the value of the
- X.B history
- Xvariable.
- XIf this variable is not set, only the most recent command is remembered.
- XTo reference previously typed commands, the `!' character
- Xis used in the same manner as in
- X.IR csh .
- XThere is a limited implementation of history modification;
- Xsupported are the argument selectors that reference
- Xcommand line arguments and \*Q:p\*U (echo, but don't execute the command).
- X.sp
- XExamples:
- X.nf
- X.in +2
- X.ta 1i
- X!-2:$ two commands ago, last argument.
- X!3:2-4 the third command, arguments two through four.
- X!!:p print the last command in its entirety.
- X.in -2
- X.fi
- X.PP
- XDuring the sourcing of initialization files (.mushrc), history is not
- Xin effect and therefore the `!' character does not cause history expansion.
- XThis includes startup of the program and when the command
- X.I source
- Xis issued.
- XUUCP style addresses that contain the `!' character may be given in the
- Xinitialization file without the need to be preceded by a backslash.
- XHowever, `!' does need to be escaped if
- X.BR cmd 's
- Xare used to reference command line arguments.
- X.PP
- X.BR "Command line aliasing" .
- X.PP
- XThis feature enables command substitution similar to
- X.IR csh .
- XTo be backwards compatible with UCB Mail, the
- X.B alias
- Xcommand is used for address aliasing.
- XThus, the command
- X.B cmd
- Xis introduced in place of
- X.BR alias .
- X.PP
- XExamples:
- X.nf
- X.in +2
- Xcmd d delete
- Xcmd t type
- Xcmd dt 'd ; t'
- Xcmd - previous
- Xcmd r 'reply \\!* -e -i'
- X.in -2
- X.fi
- X.sp
- XIn the last example, if the user types \*Qr 5\*U,
- X.I Mush
- Xwill reply to sender of the fifth message and pass all the other
- Xarguments along to the
- X.B reply
- Xcommand.
- XNote the escaping of the `!' character.
- XThis must also be done if set in the initialization file (.mushrc).
- XHad the user not specified a message number on the `r' command line,
- X.B reply
- Xwould respond to the \*Qcurrent message\*U rather than the fifth message.
- X.PP
- X.BR "Piping commands" .
- X.PP
- X\*QOutput\*U from a command is a
- X.BR "message list" ,
- Xnot the
- X.I text
- Xin a message.
- XA
- X.B "message list"
- Xis defined as the set of messages that the user specifies in a command or
- Xthe messages a command affects after it is through executing.
- XWhen one command is piped to another, the effect is that the second command
- Xwill consider only those messages affected by first command.
- XIn most cases,
- X.I Mush
- Xis smart enough to know when piping is occurring and may suppress text output
- Xthat a command might produce.
- X.PP
- XExamples:
- X.sp
- X.ti +2
- Xpick -f fred | save fred_mail
- X.sp
- XThis will find all the messages from \*Qfred\*U
- Xand save them all in the file named fred_mail.
- X.sp
- X.ti +2
- Xlpr 4-8 | delete
- X.sp
- XThis will send messages 4, 5, 6, 7, and 8 to the printer and then delete them.
- X.sp
- X.ti +2
- Xheaders :o | delete
- X.sp
- XDeletes all old (already read) mail.
- X.PP
- XBecause action is taken on mail messages, not files,
- Xmetacharacters such as `*' and `?' are not expanded to file names as
- X.I csh
- Xwould do.
- XInstead,
- X.I Mush
- Xcommands take
- X.I "message lists"
- Xas arguments (a list references one or messages) to take action upon.
- XWhen referencing message numbers,
- X.I Mush
- Xunderstands the following special syntax:
- X.sp
- X.in +2
- X.nf
- X.ta 1.0i
- X* All messages
- X^ The first message
- X$ The last message
- X\&. The current message
- XN\-M A range of messages between N and M, inclusive
- X.sp
- X.fi
- X.in -2
- XIn the last case, N and M may be * ^ $ . or digits referencing
- Xexplicit message numbers.
- XThe range must be in ascending order.
- X.sp
- XYou can also negate messages by placing the message list inside
- Xbraces, `{' `}' \*- thus, the expression \*Q2-19 {11-14}\*U references
- Xmessages 2 through 19 except for messages 11 through 14.
- X.sp
- XNote that message lists are parsed left to right.
- XNegated messages may be reset by turning them on
- Xagain later in the argument list.
- XA common error new users make is to specify a negated list without
- Xspecifying any beginning messages.
- X.sp
- X.ti +2
- Xdelete { 6 }
- X.sp
- XIn this example, the user attempted to delete all messages
- Xexcept for number 6.
- XHe should have specified `*' beforehand.
- XA correct example:
- X.sp
- X.ti +2
- Xpreserve ^-. { 3 }
- X.sp
- XHere, the user specifies a valid message list and causes
- X.I Mush
- Xto preserve all messages from the beginning of the list (message 1)
- Xto the current message, excluding message 3.
- X.PP
- XAs discussed, after the command line is parsed, the command given is
- Xcalled and the rest of the arguments on the command line are passed to it.
- XIf no
- X.I Mush
- Xcommand has been found that matches the one given, then the variable
- X.B unix
- Xis checked.
- XIf it is set,
- X.I Mush
- Xattempts to run the command line as a
- X.IR UNIX (TM)
- Xcommand.
- X.PP
- XIf
- X.B unix
- Xis not set, or if the command could not be found in the user's PATH
- Xenvironment, a message will be printed indicating that the command was
- Xnot found.
- X.PP
- XSince no \*Qmessages\*U are affected by \fIUNIX\fR
- Xcommands, those that appear within \fIMush\fR
- Xpipelines are executed by the \fBpipe\fR command. A \fIUNIX\fR
- Xcommand may never be the first command in a pipeline unless the \fBpipe\fR
- Xcommand is used explicitly.
- XIf the user wishes to execute \fIUNIX\fR
- Xcommands that are to be piped to one another (or use any sort of redirection),
- Xthe command \fBsh\fR is provided for such purposes.
- XSince \fIMush\fR will parse the entire command line, caution should be
- Xtaken to enclose questionable shell variables or metacharacters with
- Xquotes to prevent \fIMush\fR from expanding them.
- XSee the COMMANDS heading below for more detail.
- X.PP
- XThis shell-like quality is for the convenience of the user and is not
- Xintended to replace the functionality of
- X.IR sh ,
- X.IR csh ,
- Xor any other command interpreter.
- X.SH "CURSES INTERFACE"
- XThe curses interface utilizes the curses routines intrinsic to most
- X.I UNIX
- Xsystems.
- XThis interface is screen oriented rather
- Xthan line oriented and allows the user to access commands and messages
- Xmore quickly at the cost of history, piping, and a few commands.
- X.PP
- XMany users who prefer the curses interface might want to always start
- Xall their mail sessions in the curses interface.
- XPutting the curses
- Xcommand in your initialization file is a no-no, so you can alias your
- Xlogin shell mail command to include the -C option.
- XIf you use the Bourne Shell, you're going to have to type it out all the time.
- XMush will to attempt to know not to run a shell if you're just sending mail to
- Xsomeone, so the
- X.I csh
- Xcommand line sequences:
- X.sp
- X.ti +2
- X% alias mail 'mush -C'
- X.ti +2
- X% mail fred
- X.sp
- Xwill mail to fred and not enter the shell.
- XHowever, if you just said, "mail"
- Xwith no arguments, you'll enter the shell in curses mode if you have mail.
- XIf you don't, you'll be told so, and the shell will not start.
- XIf you want to enter curses mode even if
- Xyou don't have mail, use the \-S option on the command line.
- X.PP
- XIn curses mode, the user's terminal has its \*Qecho\*U turned off so commands
- Xthat are issued are not echoed on the screen.
- XCertain commands cause the mode
- Xto return to normal for typing purposes (sending mail, for example).
- XIn normal operation, the screen will display the current set of message
- Xheaders, the current message number is in the top left corner, the
- Xmail status on the top line, and the cursor will be placed on the current
- Xmessage.
- XThe number of message headers displayed is set by the variable
- X.BR screen .
- XIf the user does not have that variable set, the baud rate is checked and
- Xthe size of the screen is set according to optimal refresh time.
- XUsually, 300 baud gives 7 lines, 1200 gives 14, 2400 gives 22 lines, and all
- Xhigher baud rates give the size of the screen, whatever that may be.
- XNote that the top line is reserved for \*Qstatus\*U and the bottom line is
- Xfor user interaction should it be required.
- X.PP
- XThe user may now type commands via key sequences that are not echoed
- Xto the screen.
- XThus, function keys may be bound to \*Qcommands\*U by using the
- X.B bind
- Xcommand.
- XA list of key-to-command bindings can be found at runtime by typing `?'
- Xin curses mode or by using the
- X.B bind
- Xcommand in line mode.
- X.PP
- XThe commands to which you can map sequences are intended to be as self
- Xexplanatory as possible, but admittedly, it's easier to figure out via
- Xtrial and error than to try to wade through this documentation.
- XA list of the legal curses commands can be obtained when executing the
- Xbind command.
- XRegular tty line-mode commands are not issued from
- Xthe curses interface; only special curses mode commands are understood.
- XThe current list of valid curses commands is:
- X.sp
- X.ta 1.5i 3i 4.5i
- X.in +4
- X.nf
- Xalias back-msg bind bind-macro
- Xbottom-page chdir copy copy-list
- Xdelete delete-list display display-next
- Xexit exit! first-msg folder
- Xgoto-msg ignore last-msg line-mode
- Xlpr mail mail-flags map
- Xmap! my-hdrs next-msg preserve
- Xquit quit! redraw reply
- Xreply-all reverse-video save save-list
- Xsaveopts screen-back screen-next search-again
- Xsearch-back search-next shell-escape sort
- Xsort-reverse source top top-page
- Xunbind undelete undelete-list update
- Xvariable version write write-list
- Xhelp
- X.fi
- X.in -4
- X.sp
- X.PP
- XThe following is a list of default key-command bindings.
- XIf you specify bind commands in your initialization file that conflict with
- Xthese defaults, your settings will override the defaults.
- XThe default settings given here
- Xuse the ^-character method to indicate control characters.
- XThus, `^X' would mean control-X even
- Xthough you'd have to type \*Q\\CX\*U to set
- Xthe binding and actually use the control key and the `X' key simultaneously
- Xto really
- X.I do
- Xa Control-X.
- XThis is mostly because nroff makes printing the backslash
- Xcharacter so amazingly difficult.
- X.TP
- X\&., t, p, T=top, n=next
- XDisplay (type/print) message.
- XTop will display the first
- X.B crt
- Xlines of a message.
- XNext will print the next message.
- XIf the current message is deleted, the next undeleted message is found.
- XYou might notice this is different from the line mode, which will return
- Xan error message that the current message is marked as deleted.
- X.TP
- X+, j, J, RETURN
- XGo to next message.
- X.TP
- X-, k, K, ^K
- XGo to previous message.
- X.TP
- X^, $
- XGo to first/last message.
- X.TP
- X{, }
- XGo to top/bottom of screen.
- X.TP
- Xa
- XSet aliases.
- X.TP
- Xb, B
- XSet/unset bindings.
- X.TP
- Xd, D, u, U
- XDelete/undelete messages (capitals prompt for message list).
- X.TP
- Xf
- XChange folder.
- XIf current folder has changed, verification for update will be requested.
- X.TP
- Xg, 0-9
- XGo directly to a specified message.
- XWhen the \*Qgoto\*U command
- Xis selected, a prompt at the bottom of the window prompts for a
- X.BR "message list" .
- XAnything that describes a message list may be used.
- XSince
- X.I Mush
- Xcommands return message lists, a legal
- X.I Mush
- Xcommand enclosed in backquotes may be used to go to a particular message.
- XThe new current message pointer will point to the next
- Xmessage, returned by the command, that is below the old current message.
- XAn example:
- X.sp
- X.ti +2
- Xgoto msg: `pick \-f argv`
- X.sp
- XThis will cause the current message to move to the first message
- Xin the current folder from the user \*Qargv\*U that comes after the
- Xmessage pointed to when the \*Qgoto\*U was issued.
- XSo, if messages 1 and 5
- Xare from the user \*Qargv\*U and the current message the user was on
- Xwas message 3, then the new current message would be message 5, since it
- Xis the first message found after message 3 that is from \*Qargv\*U.
- XIf none of the messages are found after the current message, the new
- Xcurrent message will be the first one returned by the command.
- X.TP
- Xh
- XSet personal headers.
- X.TP
- Xi
- XSet ignored headers.
- X.TP
- Xm, M
- XSend mail (capital prompts for mail flags).
- X.TP
- Xo, O
- XOrder messages (sort; capital reverses order).
- XA prompt requests the sort constraints.
- X.TP
- Xq, Q, x, X
- XQuit/exit.
- X\&`q' will test to see if the current folder has been updated and prompt
- Xthe user to verify updating.
- X\&`x' does not update mail, but quits the program.
- X\&`Q' does not prompt for update verification; if changes were
- Xmade, updating is automatic.
- X\&`Q' (quit!) and `X' (exit!) will work even when typed at the
- X\*Q...continue...\*U prompt, whereas `q' and `x' will not.
- X.TP
- Xr, R
- XReply/reply all.
- X.TP
- Xs, S, c, C, w, W
- XSave, copy, or write messages (capitals prompt for message lists).
- X.TP
- Xv
- XSet regular variables (as opposed to environment variables).
- X.TP
- XV
- XPrint version number.
- X.TP
- Xz, Z
- XPrint next/previous screenful of message headers.
- X.TP
- X^L
- XRedraw the screen.
- X.TP
- X^P
- XPreserve current message (toggle).
- X.TP
- X^U
- XUpdate folder.
- XA prompt will request confirmation.
- X.TP
- X^R
- XToggle reverse video mode (current message is in reverse video).
- X.TP
- X|
- XSend message to printer
- X.TP
- X!
- XShell Escape.
- XPrompts for command; RETURN invokes a shell.
- X.TP
- X%
- Xchange directory.
- X.TP
- X(, )
- XSource/saveopts.
- XPrompts for file name.
- X.TP
- X/, ^/, ^N
- XForward, backward, continue search for patterns.
- XEntire messages are not searched for here.
- XOnly the text available on the screen is searched for.
- XNote that some terminals use `^_' (control-underscore) for `^/',
- Xso you may wish to re-bind this key.
- X.TP
- X&&
- XCreate a curses mode macro.
- X.TP
- X&:
- XCreate a line mode macro.
- X.TP
- X&!
- XCreate a composition mode macro.
- X.TP
- X:[cmd]
- XEnter line mode for one command.
- XHistory is not recorded for this escape,
- Xand line mode macros are not available.
- XIf no command is given, curses mode
- Xis exited and the session continues in line mode
- X(in which case history and macros become available).
- X.PP
- XWhen setting new key sequences to be bound to commands, the user may
- Xuse control keys and the ESCAPE character for extended commands.
- XExceptions are control-C, control-\\, and possibly other control characters
- Xdepending on your system's configuration or your current tty mode settings.
- X.PP
- XWhen assigning key sequences to commands, the user enters the
- X.B bind
- Xcommand and prompting is done.
- XIf the
- Xuser wishes to have control characters or the escape character in a key
- Xsequence while still using ASCII format, a special notation for control
- Xcharacters is provided.
- XThis sequence is used primarily for the use of
- Xbinding control character sequences in the initialization file.
- XThis format
- Xis also used to display the current key-command mappings by the program.
- X.PP
- XTo specify control characters in ascii format for the bind command, the
- Xsequence \*Q\\Cc\*U is used where `c' is the
- Xcharacter that the control key will translate to and must be in upper case.
- XThe sequence \*Q\\CP\*U would map to control-P.
- XIf the user wishes to indicate the RETURN key, this is specified
- Xwith the string \*Q\\n\*U and
- Xthe tab key is specified by the string \*Q\\t\*U.
- XAs a more complex example, on a Wyse-50 terminal, the 8th function key
- Xoutputs the three characters: control-A, H, line-feed.
- XTo map this function key to a command, the
- Xuser would have to enter the sequence \*Q\\CAH\\n\*U as the key sequence,
- Xthen follow up with a valid curses command. From then on, if the user
- Xpresses that function key,
- Xthe command mapped to it will be executed.
- X.PP
- XThe ESCAPE key is signified by the sequence, \*Q\\E\*U.
- XOn a Sun-3 workstation,
- Xthe R1 key outputs the character sequence: ESC, [, 2, 0, 8, z.
- XThe corresponding
- X.B bind
- Xkey sequence would be \*Q\\E[208z\*U.
- XRestrictions are that key sequences may not contain the space character
- Xunless bound in line mode, and can never begin with a digit.
- X.PP
- XWhenever a command is entered, other than `^L'
- X.RB ( redraw ),
- Xwhich causes the screen to scroll or be refreshed in any way,
- X.I Mush
- Xis left in the
- X.I continue
- Xmode.
- XWhen in this mode, the user is given his line-mode prompt followed
- Xby \*Q...continue...\*U indicating that he may issue a new command or
- Xreturn to the top level where the current message headers are displayed
- Xon the screen.
- XRemember that this is still the curses mode, but much time
- Xis saved by avoiding redrawing the screen after each command.
- XThe user may move up and down messages using the appropriate commands
- X(j/k by default) or anything else the curses mode allows.
- XOnly the exit and quit commands will return to the top level.
- XBecause of this, there are 2 additional
- Xways to \*Qquit\*U from curses mode and return to the login shell.
- XThe \*Qexit\*U and \*Qquit\*U commands will quit from the top level, but
- Xthe commands
- X.B exit!
- Xand
- X.B quit!
- Xare used to exit from the \*Qcontinue\*U level in the curses interface as well
- Xas from the top level.
- X.PP
- XNote that the best way to understand the curses interface is to just use it.
- XIn line mode, the command \*Qcurses\*U puts you into curses mode.
- X.SH "GRAPHICS INTERFACE"
- XWhen running the window-based graphics interface, there will be 5
- Xwindows displaying panels of commands, message headers and a text
- Xwindow which is used for displaying messages or writing messages
- Xto send to other users.
- X.PP
- XThe panel items have labels describing their functionality.
- XSelecting
- Xa panel item with the LEFT mouse button causes the action to be executed.
- XThe RIGHT mouse button displays a menu of options that the command may
- Xbranch to.
- XFor example, the
- X.B save
- Xpanel item by default will save messages to the file \*Qmbox\*U, but the
- XRIGHT mouse button causes a menu to be displayed, and the choices of
- Xwhere to save the message increase to include the items in the menu.
- XThese typically include the files in the user's folder directory (see the
- X.B folder
- Xvariable below).
- X.PP
- XAt the end of each list of menu entries for panel items is an item
- Xlabelled \*Qhelp\*U.
- XWhen this item is chosen, help for that command
- Xis displayed in the center of the console.
- X.PP
- XWhen composing letters, the interface is the same for the tool mode,
- Xthe line mode and the curses mode.
- XTilde escapes are recognized by all
- Xthe interfaces, but the tool interface allows the user to use the menu
- Xmouse button to select the tilde escape desired.
- X.PP
- XIf the user wishes to review a mail message while in edit-mode, he may
- Xdo as the other interfaces and enter the tilde escape command \*Q~:print\*U.
- XThis will cause the current message (or the numbered message, if given) to
- Xbe displayed in the window.
- XEditing is temporarily put on hold till the user
- Xenters a `q' in the message window to indicate that he is done reading the
- Xmessage and input is to be directed again to the letter being composed.
- X.SH COMMANDS
- XDescribed below are legal commands understood by
- X.I Mush
- Xthat you can type at the line mode prompt.
- XMost commands have abbreviations
- X(given in parentheses) and can be followed by message lists.
- XIn most cases,
- Xwhitespace is not necessary to separate commands from message lists.
- XFor example, \*Qd*\*U will delete all messages, and \*Qu1-7 {4}\*U will
- Xundelete messages 1 through 7 except for message number 4.
- X.PP
- XThe ability to customize commands using the
- X.B cmd
- Xfacility allows users to customize
- X.I Mush
- Xto resemble other mailers.
- XHowever, efforts have already been made to include commands that are backwards
- Xcompatible with other line-mode mailers.
- XUsers of the graphics tool mode of
- X.I Mush
- Xmay have little need for the command line mode because the icon based
- Xinterface allows interaction with many commands.
- XThe graphics mode is much more restrictive in favor of user
- Xfriendliness but most useful commands may be achieved anyway.
- X.PP
- XThe following is a list of all recognized commands.
- XSince most commands accept a
- X.I "message list"
- Xas an argument, arguments are noted only when they differ from a message list.
- X.TP
- X.BR alias " [name] [address-list]"
- X.ns
- X.TP
- X.BR unalias " name"
- XThe
- X.B alias
- Xcommand defines a name to stand for a list of addresses.
- XThe defined name can then be substituted for the entire list when
- Xsending mail.
- XFor example,
- END_OF_FILE
- if test 49833 -ne `wc -c <'mush.1.1'`; then
- echo shar: \"'mush.1.1'\" unpacked with wrong size!
- fi
- # end of 'mush.1.1'
- fi
- echo shar: End of archive 19 \(of 19\).
- cp /dev/null ark19isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 19 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-